package it.unicam.ids.pvm.distributore;

import java.util.Date;

/**
 * La classe rappresenta un'interfaccia per la gestione 
 * della comunicazione remota, relativamente all'invio dello 
 * stato del distributore, delle informazioni sugli acquisti 
 * e sui prodotti, e dell'acquisizione ed eliminazione 
 * degli annunci.
 * @author Luca Iachini, Valerio Iachini, Alessandro Cardenà
 *
 */
public interface GestoreRete {
	
	/**
	 * Il metodo consente di inviare lo stato 
	 * del distributore automatico.
	 * @param stato.
	 */
	
	public void inviaStato(DistributoreAutomatico.Stato stato);
	
	/**
	 * Il metodo consente l'aggiunta di un annuncio.
	 * @param a annuncio da aggiungere.
	 */
	
	public void addAnnuncio(Annuncio a);
	
	/**
	 * Il metodo permette di rimuovere un'annuncio.
	 */
	
	public void rimuoviAnnuncio();
	
	/**
	 * Il metodo consente di inviare le informazioni 
	 * relative ad un acquisto.
	 * @param codice codice del prodotto acquistato.
	 * @param data data d'acquisto.
	 * @param prezzo prezzo del prodotto acquistato.
	 */
	
	public void inviaAcquisto(String codice, Date data, double prezzo);
	
	/**
	 * Il metodo consente di informare l'esaurimento 
	 * di un determinato prodotto.
	 * @param prodotto prodotto esaurito.
	 * @param data data d'esaurimento.
	 */
	
	public void notificaProdottoFinito(Prodotto prodotto,Date data);
	
}
